package fr.upstlse.glre.client.administration.actualite.action;

import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.actualite.ModificationActualitePanel;
import fr.upstlse.glre.client.administration.actualite.ModificationActualiteWindow;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.actualite.ActualiteVOGWT;

public class DeleteActualiteAction implements Listener<WindowEvent> {

	private ActualiteVOGWT actualiteVOGWT;

	public DeleteActualiteAction(ActualiteVOGWT pActualiteVOGWT) {
		actualiteVOGWT = pActualiteVOGWT;
	}
	
	public void handleEvent(WindowEvent pBe) {
		if (pBe.buttonClicked.getText().equals("Yes")) {
			final MessageBox lWaitMessageBox = MessageBox.wait("Information",
					"Suppresion de l'actualité ", "suppression en cours...");
			AsyncCallback<Object> lCallback = new AsyncCallback<Object>() {
				public void onFailure(Throwable pCaught) {
					lWaitMessageBox.hide();
					MessageBox.alert("Erreur deleteActualite ", pCaught
							.getMessage(), null);
				}

				public void onSuccess(Object pResult) {
					lWaitMessageBox.hide();
					Info.display("Information", "Actualité supprimée avec succès",
							"");
					ModificationActualiteWindow.closeCurrentWindow();
					ModificationActualitePanel.getInstance()
							.getModificationList().remove(
									ModificationActualitePanel.getInstance()
											.getModificationList()
											.getSelectedItem());
				}
			};
			ControlerUtil.getControlerServiceAsyncInstance().deleteActualite(actualiteVOGWT.getId(), lCallback);
		}
		
	}

}
